home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / graphic / 1svga.zip / GR_UNITS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-04-25  |  2KB  |  73 lines

  1. { Graph Units 1..4 }
  2.  
  3. uses Graph,Txt;
  4.  
  5. var GrData:array[0..119,1..2] of integer;
  6.     Pal:array[0..767] of byte;
  7.  
  8. { ─────────────── InitGr ─────────────── }
  9. procedure InitGr(No,N:integer);
  10. var I:integer;
  11.     A,R:real;
  12. begin
  13.   A:=0;
  14.   case No of
  15.     1:for I:=0 to 119 do begin
  16.         R:=100*(0.5+0.5*Sin(N*A));
  17.         GrData[I,1]:=Trunc(R*Cos(A));
  18.         GrData[I,2]:=Trunc(R*Sin(A));
  19.         A:=A+Pi/60;
  20.       end;
  21.     2:for I:=0 to 119 do begin
  22.         R:=100*(0.82+0.18*Sin(3*N*A))*(0.5+0.5*Sin(N*A));
  23.         GrData[I,1]:=Trunc(R*Cos(A));
  24.         GrData[I,2]:=Trunc(R*Sin(A));
  25.         A:=A+Pi/60;
  26.       end;
  27.     3:for I:=0 to 119 do begin
  28.         R:=100*(0.33*Sin(0.5*N*A)+Sin(N*A));
  29.         GrData[I,1]:=Trunc(R*Cos(2*A));
  30.         GrData[I,2]:=Trunc(R*Sin(2*A));
  31.         A:=A+Pi/30;
  32.       end;
  33.     4:for I:=0 to 119 do begin
  34.         GrData[I,1]:=Trunc(100*Sin(N*A)*Cos(A));
  35.         GrData[I,2]:=Trunc(100*Sin(N*A+A)*Sin(A));
  36.         A:=A+Pi/60;
  37.       end;
  38.   end;
  39. end;
  40. { ─────────────── DrawGr ─────────────── }
  41. procedure DrawGr(Cx,Cy,Rx,Ry,Color:integer);
  42. var I:integer;
  43.     Data:array[0..119,1..2] of integer;
  44. begin
  45.   for I:=0 to 119 do begin
  46.     Data[I,1]:=GrData[I,1]*Rx div 100+Cx;
  47.     Data[I,2]:=GrData[I,2]*Ry div 100+Cy;
  48.   end;
  49.   SetColor(Color);
  50.   for I:=0 to 118 do Line(Data[I,1],Data[I,2],Data[I+1,1],Data[I+1,2]);
  51.   Line(Data[119,1],Data[119,2],Data[0,1],Data[0,2]);
  52. end;
  53.  
  54. var A,B,I:integer;
  55. begin
  56.   A:=InstallUserDriver('SVGA256',nil); B:=2;
  57.   InitGraph(A,B,'');
  58.   GetPalette(0,256,Pal);
  59.   SetFillStyle(1,104); Bar(0,0,640,480);
  60.   InitGr(1,4);
  61.   for I:=0 to 95 do DrawGr(160,120,108-I,108-I,64+I div 3);
  62.   InitGr(2,2);
  63.   for I:=0 to 119 do DrawGr(480,120,128-I,128-I,64+I div 3);
  64.   InitGr(3,5);
  65.   for I:=0 to 39 do DrawGr(165,355,80-2*I,80-2*I,83-I div 2);
  66.   InitGr(4,7);
  67.   for I:=0 to 19 do DrawGr(475,355,100-4*I,100-4*I,64+I);
  68.   CirclePalette(64,40,80,30,Pal);
  69.   Readln;
  70.   CloseGraph;
  71.   RestoreCrtMode;
  72. end.
  73.